home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / vmed.arc / ED8.CCC < prev    next >
Text File  |  1985-12-03  |  3KB  |  157 lines

  1. /*    Screen editor:    operating system module
  2.  *
  3.  *    Module: ed8/ccc
  4.  *    Date: November 15, 1983
  5.  *
  6.  */
  7.  
  8. /* all calls to the operating system are made here.
  9.  * only this module and the assembler libraries will
  10.  * have to be rewritten for a new operating system.
  11.  * Made specific to LC libraries - jwk...
  12.  */
  13. #include ed0
  14.  
  15. /* data global to this module */
  16.  
  17. #option zvar ON
  18. int     ugc;    /* keyboard input character */
  19. #option zvar OFF
  20.  
  21. /* return -1 if no character is ready from the console.
  22.  * otherwise, return the character.
  23.  */
  24. syscstat()
  25. {    if (ugc)
  26.         return(YES);
  27.     else    {
  28.         ugc = inkey();
  29.         return(ugc ? YES : NO);
  30.     }
  31. }
  32.  
  33. /* print character on the console */
  34. syscout(c)
  35. char    c;
  36. {
  37. #asm
  38.     PUSH    HL
  39.     LD    HL,4
  40.     ADD    HL,SP
  41.     LD    A,(HL)
  42.     CALL    0033H
  43.     POP    HL
  44. #endasm
  45. }
  46.  
  47. /* print character out on printer */
  48. syslout(c)
  49. char    c;
  50. {
  51. #asm
  52.     PUSH    HL
  53.     LD    HL,4
  54.     ADD    HL,SP
  55.     LD    A,(HL)
  56.     CALL    003BH
  57.     POP    HL
  58. #endasm
  59. }
  60.  
  61. /* open a file */
  62. sysopen(name,mode)
  63. char    *name,*mode;
  64. {     FILE    *file;
  65.     if((file=fopen(name,mode)) == NULL)
  66.         return(ERR);
  67.     else    return(file);
  68. }
  69.  
  70. /* close file */
  71. sysclose(file)
  72. FILE *file;
  73. {
  74.     /* fclose doesn't reliably return OK */
  75.     return(fclose(file));
  76. }
  77.  
  78. /* read next character from a file */
  79. sysrdch(file)
  80. FILE    *file;
  81. {    return(getc(file));    }
  82.  
  83. /* write next character to file */
  84. syspshch(c,file)
  85. char    c;
  86. FILE    *file;
  87. {     if (putc(c,file) != c)
  88.     {
  89.         error("disk write failed");
  90.         return(ERR);
  91.     }
  92.     else    return(c);
  93. }
  94.  
  95. /* check file name for syntax */
  96. syschkfn(args)
  97. char    *args;
  98. {    while (*args)
  99.         *args = toupper(*args++);
  100.     return(OK);
  101. }
  102.  
  103. /* copy file name from args to buffer */
  104. syscopfn(args,buffer)
  105. char    *args,*buffer;
  106. {
  107.     int    n;
  108.     n = 0;
  109.     while (n < SYSFNMAX-1)
  110.         if (args[n] == EOS)
  111.             break;
  112.         else    buffer[n] = args[n++];
  113.     buffer[n] = EOS;
  114. }
  115.  
  116. /*      Screen editor:  operating system module
  117.  *      CHANGES ONLY for Module: ed8/ccc
  118.  *      Changed: February 14, 1984
  119.  */
  120.  
  121. /* wait for next character from the console.
  122.  * do not echo it.
  123.  */
  124. syscin()
  125. {       int temp;
  126.        syscout(CURON);         /* cursor ON */
  127.        while (ugc == 0)
  128.                ugc = inkey();
  129.        temp = ugc;
  130.        if (temp == RTA)        /* swap SHIFT-TAB and TAB */
  131.                temp = SHRA;
  132.        else if (temp == SHRA)
  133.                temp = RTA;
  134.        ugc = 0;
  135.        syscout(CUROFF);                /* cursor OFF */
  136.        return (temp);
  137. }
  138.  
  139. /* set cursor -- 02/11/84 addition.
  140.  * this version should work with any screen size
  141.  * since it always addresses from HOME position!
  142.  */
  143. setcur(x,y)     char x,y;
  144. {       syscout(HOME);  /* home the cursor for reference */
  145.        while (y--)
  146.                syscout(CURDN); /* move down to the line */
  147.        while (x--)
  148.                syscout(CURRT); /* then over to the column */
  149. }
  150.  
  151. /* end of changes to module ed8/ccc */
  152.  
  153.  
  154. /* end module ed8/ccc */
  155.  
  156.  
  157.